/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controleur;

import application.Facade;
import application.MembreBean;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.transform.Transformer;

/**
 *
 * @author James
 */
public class CommandeModifierProfil implements Commande {

    private String next;
    private String pageSuivante;

    public CommandeModifierProfil(String next) {
        this.next = next.toLowerCase();
    }

    @Override
    public String executer(HttpServletRequest req, HttpServletResponse res) throws CommandeException {
        Facade f = new Facade();
        int rowResults;
        MembreBean m;
        pageSuivante = next;
        String imageProfil = req.getParameter("image_profil");
        String ancienMotPasse = req.getParameter("pwd-ancien");
        boolean imageExiste = true;

        if (ancienMotPasse != null) {
            m = f.getMembre(req.getCookies());

            if (ancienMotPasse.equals(m.getMotPasse())) {
                if (!imageProfil.equals("")) {
                    try {
                        FileInputStream fin = f.creerFichier(imageProfil);
                        f.updateImage(fin, req.getParameter("idImage"));
                    } catch (FileNotFoundException e) {
                        redirigerPageErreur(req, "L'image n'existe pas.");
                        imageExiste = false;
                    }
                }

                if (imageExiste) {
                    rowResults = f.updateMembre(req, res);

                    if (rowResults == 0) {
                        redirigerPageErreur(req, "Erreur de base de données.");
                    } else {
                        if (req.getParameter("pwd-nouveau-1") != null) {
                            f.creerCookiesIdentification(req.getParameter("nomUtilisateur"), 
                                    req.getParameter("pwd-nouveau-1"), res);
                        }                                                
                    }
                }
            } else {
                redirigerPageErreur(req, "Votre mot de passe est incorrect.");
            }
        } else {
            redirigerPageErreur(req, "Votre profil n'a pas été modifié.");
        }
        return pageSuivante;
    }

    private void redirigerPageErreur(final HttpServletRequest req, final String message) {
        req.setAttribute(ConstantesWeb.ATTRIBUT_ERREUR, message);
        pageSuivante = ConstantesWeb.PAGE_ERREUR;
    }
}
